package com.manner.groupon.service.groupon;

import com.baomidou.mybatisplus.extension.service.IService;
import com.manner.groupon.common.BaseResponse;
import com.manner.groupon.common.PageRequest;
import com.manner.groupon.common.PageResult;
import com.manner.groupon.model.dto.grouponCoupons.BuyGrouponCouponsRequest;
import com.manner.groupon.model.dto.grouponCoupons.StoreQueryGrouponCoupon;
import com.manner.groupon.model.entity.GrouponCoupons;
import com.manner.groupon.model.vo.AdminCouponVO;
import com.manner.groupon.model.vo.GroupCouponVo;

import java.util.List;

/**
 * @author manner
 * @description 针对表[tb_groupon_coupons(团购优惠券表)]的数据库操作Service
 * @createDate 2024-10-13 14:26:25
 */
public interface GrouponCouponsService extends IService<GrouponCoupons> {

    /**
     * @param grouponCouponsId 团购优惠券编号
     * @description: 下架团购优惠券
     * @author Manner
     * @date 2024/12/5 19:05
     */
    void linkmanRemoveGrouponCoupon(Long grouponCouponsId, int status);

    /**
     * @param phone 登录手机号账号
     * @return List<StoreQueryGrouponCoupon>
     * @description: 商户门店联系人查询自己名下店铺的所有团购优惠券
     * @author Manner
     * @date 2024/12/5 17:25
     */
    List<StoreQueryGrouponCoupon> queryMyAllGrouponCoupons(String phone);

    /**
     * @param grouponCoupons
     * @return BaseResponse
     * @description: 平台内部员工对团购优惠券进行编辑更新
     * @author Manner
     * @date 2024/11/10 16:51
     */
    void staffEdit(GrouponCoupons grouponCoupons);

    /**
     * @param grouponCouponsId
     * @param statusCode
     * @return BaseResponse
     * @description: 管理员审核平台内部员工上架的团购优惠券
     * @author Manner
     * @date 2024/11/10 16:31
     */
    BaseResponse toExamineUpdate(Long grouponCouponsId, Integer statusCode);

    /**
     * 用户下单购买团购优惠券,生成团购订单
     *
     * @param buyGrouponCouponsRequest
     * @return BaseResponse<Integer>
     * @author Manner
     * @date 2024/10/11 21:00
     */
    BaseResponse<String> addGroupCouponsGenerateOrder(BuyGrouponCouponsRequest buyGrouponCouponsRequest);

    /**
     * 根据团购券编号获取数据
     *
     * @param id 团购券编号
     * @return
     */
    BaseResponse<GroupCouponVo> queryById(Long id);

    /**
     * 搜索获取所有团购券数据
     *
     * @param page    分页参数
     * @param storeId 商家编号
     * @param name    团购券名称
     * @param status  状态
     * @return
     */
    BaseResponse<PageResult<AdminCouponVO>> search(PageRequest page, String storeId, String name, int status);

    /**
     * 取消订单
     *
     * @param id 用户编号
     * @return
     */
    BaseResponse<String> cancel(Long id);

    /**
     * 订单退款
     *
     * @param no 订单编号
     * @return
     */
    BaseResponse<String> refund(String no, Double userLongitude, Double userLatitude);
}
